<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>find_calib_object [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_calibration.html">Calibration</a> / <a href="toc_calibration_calibrationobject.html">Calibration Object</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">find_calib_object</span><span data-if="c" style="display:none;">T_find_calib_object</span><span data-if="cpp" style="display:none;">FindCalibObject</span><span data-if="dotnet" style="display:none;">FindCalibObject</span><span data-if="python" style="display:none;">find_calib_object</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">find_calib_object</span><span data-if="c" style="display:none;">T_find_calib_object</span><span data-if="cpp" style="display:none;">FindCalibObject</span><span data-if="dotnet" style="display:none;">FindCalibObject</span><span data-if="python" style="display:none;">find_calib_object</span></code> — Find the HALCON calibration plate and set the extracted points and
contours in a calibration data model.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>find_calib_object</b>(<a href="#Image"><i>Image</i></a> :  : <a href="#CalibDataID"><i>CalibDataID</i></a>, <a href="#CameraIdx"><i>CameraIdx</i></a>, <a href="#CalibObjIdx"><i>CalibObjIdx</i></a>, <a href="#CalibObjPoseIdx"><i>CalibObjPoseIdx</i></a>, <a href="#GenParamName"><i>GenParamName</i></a>, <a href="#GenParamValue"><i>GenParamValue</i></a> : )</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_find_calib_object</b>(const Hobject <a href="#Image"><i>Image</i></a>, const Htuple <a href="#CalibDataID"><i>CalibDataID</i></a>, const Htuple <a href="#CameraIdx"><i>CameraIdx</i></a>, const Htuple <a href="#CalibObjIdx"><i>CalibObjIdx</i></a>, const Htuple <a href="#CalibObjPoseIdx"><i>CalibObjPoseIdx</i></a>, const Htuple <a href="#GenParamName"><i>GenParamName</i></a>, const Htuple <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>FindCalibObject</b>(const HObject&amp; <a href="#Image"><i>Image</i></a>, const HTuple&amp; <a href="#CalibDataID"><i>CalibDataID</i></a>, const HTuple&amp; <a href="#CameraIdx"><i>CameraIdx</i></a>, const HTuple&amp; <a href="#CalibObjIdx"><i>CalibObjIdx</i></a>, const HTuple&amp; <a href="#CalibObjPoseIdx"><i>CalibObjPoseIdx</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
<p>
<code>void <a href="HCalibData.html">HCalibData</a>::<b>FindCalibObject</b>(const HImage&amp; <a href="#Image"><i>Image</i></a>, Hlong <a href="#CameraIdx"><i>CameraIdx</i></a>, Hlong <a href="#CalibObjIdx"><i>CalibObjIdx</i></a>, Hlong <a href="#CalibObjPoseIdx"><i>CalibObjPoseIdx</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>) const</code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>FindCalibObject</b>(<a href="HObject.html">HObject</a> <a href="#Image"><i>image</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CalibDataID"><i>calibDataID</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CameraIdx"><i>cameraIdx</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CalibObjIdx"><i>calibObjIdx</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CalibObjPoseIdx"><i>calibObjPoseIdx</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
<p>
<code>void <a href="HCalibData.html">HCalibData</a>.<b>FindCalibObject</b>(<a href="HImage.html">HImage</a> <a href="#Image"><i>image</i></a>, int <a href="#CameraIdx"><i>cameraIdx</i></a>, int <a href="#CalibObjIdx"><i>calibObjIdx</i></a>, int <a href="#CalibObjPoseIdx"><i>calibObjPoseIdx</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>find_calib_object</b>(<a href="#Image"><i>image</i></a>: HObject, <a href="#CalibDataID"><i>calib_data_id</i></a>: HHandle, <a href="#CameraIdx"><i>camera_idx</i></a>: int, <a href="#CalibObjIdx"><i>calib_obj_idx</i></a>: int, <a href="#CalibObjPoseIdx"><i>calib_obj_pose_idx</i></a>: int, <a href="#GenParamName"><i>gen_param_name</i></a>: Sequence[str], <a href="#GenParamValue"><i>gen_param_value</i></a>: Sequence[Union[str, float, int]]) -&gt; None</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">find_calib_object</span><span data-if="c" style="display:none">find_calib_object</span><span data-if="cpp" style="display:none">FindCalibObject</span><span data-if="com" style="display:none">FindCalibObject</span><span data-if="dotnet" style="display:none">FindCalibObject</span><span data-if="python" style="display:none">find_calib_object</span></code> searches in <a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> for a HALCON
calibration plate corresponding to the description of the calibration object
with the index <a href="#CalibObjIdx"><i><code><span data-if="hdevelop" style="display:inline">CalibObjIdx</span><span data-if="c" style="display:none">CalibObjIdx</span><span data-if="cpp" style="display:none">CalibObjIdx</span><span data-if="com" style="display:none">CalibObjIdx</span><span data-if="dotnet" style="display:none">calibObjIdx</span><span data-if="python" style="display:none">calib_obj_idx</span></code></i></a> from the calibration data model
<a href="#CalibDataID"><i><code><span data-if="hdevelop" style="display:inline">CalibDataID</span><span data-if="c" style="display:none">CalibDataID</span><span data-if="cpp" style="display:none">CalibDataID</span><span data-if="com" style="display:none">CalibDataID</span><span data-if="dotnet" style="display:none">calibDataID</span><span data-if="python" style="display:none">calib_data_id</span></code></i></a>. If a calibration plate is found,
<code><span data-if="hdevelop" style="display:inline">find_calib_object</span><span data-if="c" style="display:none">find_calib_object</span><span data-if="cpp" style="display:none">FindCalibObject</span><span data-if="com" style="display:none">FindCalibObject</span><span data-if="dotnet" style="display:none">FindCalibObject</span><span data-if="python" style="display:none">find_calib_object</span></code> extracts the centers and the contours of its marks
and estimates the pose of the plate relative to the observing camera
<a href="#CameraIdx"><i><code><span data-if="hdevelop" style="display:inline">CameraIdx</span><span data-if="c" style="display:none">CameraIdx</span><span data-if="cpp" style="display:none">CameraIdx</span><span data-if="com" style="display:none">CameraIdx</span><span data-if="dotnet" style="display:none">cameraIdx</span><span data-if="python" style="display:none">camera_idx</span></code></i></a>. All collected observation data is stored in the
calibration data model for the calibration object pose
<a href="#CalibObjPoseIdx"><i><code><span data-if="hdevelop" style="display:inline">CalibObjPoseIdx</span><span data-if="c" style="display:none">CalibObjPoseIdx</span><span data-if="cpp" style="display:none">CalibObjPoseIdx</span><span data-if="com" style="display:none">CalibObjPoseIdx</span><span data-if="dotnet" style="display:none">calibObjPoseIdx</span><span data-if="python" style="display:none">calib_obj_pose_idx</span></code></i></a>. In order to ensure a successful detection of the
calibration plate, at least one finder pattern has to be visible in the
image. For calibration plates with hexagonally arranged marks this is
a special mark hexagon where either four or six marks contain a hole, while
for calibration plates with rectangularly arranged marks this is the border
of the calibration plate with a triangle in one corner.
</p>
<h3>Preparation of the input data</h3>
<p>Before 该算子 <code><span data-if="hdevelop" style="display:inline">find_calib_object</span><span data-if="c" style="display:none">find_calib_object</span><span data-if="cpp" style="display:none">FindCalibObject</span><span data-if="com" style="display:none">FindCalibObject</span><span data-if="dotnet" style="display:none">FindCalibObject</span><span data-if="python" style="display:none">find_calib_object</span></code> can be called, a calibration
data model has to be defined performing the following steps:
</p>
<ol>
<li>
<p> <b>Create a calibration data model</b> with 该算子
<a href="create_calib_data.html"><code><span data-if="hdevelop" style="display:inline">create_calib_data</span><span data-if="c" style="display:none">create_calib_data</span><span data-if="cpp" style="display:none">CreateCalibData</span><span data-if="com" style="display:none">CreateCalibData</span><span data-if="dotnet" style="display:none">CreateCalibData</span><span data-if="python" style="display:none">create_calib_data</span></code></a>, specifying the number of cameras in the setup
and the number of used calibration objects.
</p>
</li>
<li>
<p> <b>Specify the camera type and the initial internal camera
      parameters</b> for all cameras with 该算子
<a href="set_calib_data_cam_param.html"><code><span data-if="hdevelop" style="display:inline">set_calib_data_cam_param</span><span data-if="c" style="display:none">set_calib_data_cam_param</span><span data-if="cpp" style="display:none">SetCalibDataCamParam</span><span data-if="com" style="display:none">SetCalibDataCamParam</span><span data-if="dotnet" style="display:none">SetCalibDataCamParam</span><span data-if="python" style="display:none">set_calib_data_cam_param</span></code></a>. Note that only cameras of the same
type can be calibrated in a single setup.
</p>
</li>
<li>
<p> <b>Specify the description of all calibration objects</b> with the
operator <a href="set_calib_data_calib_object.html"><code><span data-if="hdevelop" style="display:inline">set_calib_data_calib_object</span><span data-if="c" style="display:none">set_calib_data_calib_object</span><span data-if="cpp" style="display:none">SetCalibDataCalibObject</span><span data-if="com" style="display:none">SetCalibDataCalibObject</span><span data-if="dotnet" style="display:none">SetCalibDataCalibObject</span><span data-if="python" style="display:none">set_calib_data_calib_object</span></code></a>.
Note that for a successful call of <code><span data-if="hdevelop" style="display:inline">find_calib_object</span><span data-if="c" style="display:none">find_calib_object</span><span data-if="cpp" style="display:none">FindCalibObject</span><span data-if="com" style="display:none">FindCalibObject</span><span data-if="dotnet" style="display:none">FindCalibObject</span><span data-if="python" style="display:none">find_calib_object</span></code> a valid
description file of the calibration plate is necessary. This description
file has to be set beforehand via 该算子
<a href="set_calib_data_calib_object.html"><code><span data-if="hdevelop" style="display:inline">set_calib_data_calib_object</span><span data-if="c" style="display:none">set_calib_data_calib_object</span><span data-if="cpp" style="display:none">SetCalibDataCalibObject</span><span data-if="com" style="display:none">SetCalibDataCalibObject</span><span data-if="dotnet" style="display:none">SetCalibDataCalibObject</span><span data-if="python" style="display:none">set_calib_data_calib_object</span></code></a>.
As a consequence, the usage of a user-defined calibration object can only
be made by 该算子 <a href="set_calib_data_observ_points.html"><code><span data-if="hdevelop" style="display:inline">set_calib_data_observ_points</span><span data-if="c" style="display:none">set_calib_data_observ_points</span><span data-if="cpp" style="display:none">SetCalibDataObservPoints</span><span data-if="com" style="display:none">SetCalibDataObservPoints</span><span data-if="dotnet" style="display:none">SetCalibDataObservPoints</span><span data-if="python" style="display:none">set_calib_data_observ_points</span></code></a>.
</p>
</li>
</ol>
<h3>Collecting observation data</h3>
<p><code><span data-if="hdevelop" style="display:inline">find_calib_object</span><span data-if="c" style="display:none">find_calib_object</span><span data-if="cpp" style="display:none">FindCalibObject</span><span data-if="com" style="display:none">FindCalibObject</span><span data-if="dotnet" style="display:none">FindCalibObject</span><span data-if="python" style="display:none">find_calib_object</span></code> is used to collect observations in a calibration
data model. Beyond, it stores additional observation
data that cannot be added to the model with
<a href="set_calib_data_observ_points.html"><code><span data-if="hdevelop" style="display:inline">set_calib_data_observ_points</span><span data-if="c" style="display:none">set_calib_data_observ_points</span><span data-if="cpp" style="display:none">SetCalibDataObservPoints</span><span data-if="com" style="display:none">SetCalibDataObservPoints</span><span data-if="dotnet" style="display:none">SetCalibDataObservPoints</span><span data-if="python" style="display:none">set_calib_data_observ_points</span></code></a> and that is dependent on the used
calibration plate. While for calibration plates with rectangularly arranged
marks (see <a href="gen_caltab.html"><code><span data-if="hdevelop" style="display:inline">gen_caltab</span><span data-if="c" style="display:none">gen_caltab</span><span data-if="cpp" style="display:none">GenCaltab</span><span data-if="com" style="display:none">GenCaltab</span><span data-if="dotnet" style="display:none">GenCaltab</span><span data-if="python" style="display:none">gen_caltab</span></code></a>) the rim of the calibration plate is added to
the observations, calibration plates with hexagonal pattern (see
<a href="create_caltab.html"><code><span data-if="hdevelop" style="display:inline">create_caltab</span><span data-if="c" style="display:none">create_caltab</span><span data-if="cpp" style="display:none">CreateCaltab</span><span data-if="com" style="display:none">CreateCaltab</span><span data-if="dotnet" style="display:none">CreateCaltab</span><span data-if="python" style="display:none">create_caltab</span></code></a>) store one of their finder pattern. Additionally and
irrespective of the used calibration plate, the contour of each mark is added
to the calibration model.
</p>
<h3>Setting additional parameters</h3>
<p>Using <b>calibration plates with hexagonally arranged marks</b>, the
following additional parameter can be set via <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> and
<a href="#GenParamValue"><i><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></i></a>:
</p>
<dl class="generic">

<dt><b><i><span data-if="hdevelop" style="display:inline">'sigma'</span><span data-if="c" style="display:none">"sigma"</span><span data-if="cpp" style="display:none">"sigma"</span><span data-if="com" style="display:none">"sigma"</span><span data-if="dotnet" style="display:none">"sigma"</span><span data-if="python" style="display:none">"sigma"</span></i>:</b></dt>
<dd>
<p>

Smoothing factor for the extraction of the mark contours. For increasing
values of <i><span data-if="hdevelop" style="display:inline">'sigma'</span><span data-if="c" style="display:none">"sigma"</span><span data-if="cpp" style="display:none">"sigma"</span><span data-if="com" style="display:none">"sigma"</span><span data-if="dotnet" style="display:none">"sigma"</span><span data-if="python" style="display:none">"sigma"</span></i>, the filter width and thereby the amount of
smoothing increases (see also <a href="edges_sub_pix.html"><code><span data-if="hdevelop" style="display:inline">edges_sub_pix</span><span data-if="c" style="display:none">edges_sub_pix</span><span data-if="cpp" style="display:none">EdgesSubPix</span><span data-if="com" style="display:none">EdgesSubPix</span><span data-if="dotnet" style="display:none">EdgesSubPix</span><span data-if="python" style="display:none">edges_sub_pix</span></code></a> for the influence of
the filter width on the Canny filter). </p>
<p>
<i>Suggested values:</i> <i>0.5</i>, <i>0.7</i>,
<i>0.9</i>, <i>1.0</i>,
<i>1.2</i>, <i>1.5</i></p>
<p>
<i>Default:</i> <i>1.0</i>
</p>
</dd>
</dl>
<p>For <b>calibration plates with rectangularly arranged marks</b>,
<code><span data-if="hdevelop" style="display:inline">find_calib_object</span><span data-if="c" style="display:none">find_calib_object</span><span data-if="cpp" style="display:none">FindCalibObject</span><span data-if="com" style="display:none">FindCalibObject</span><span data-if="dotnet" style="display:none">FindCalibObject</span><span data-if="python" style="display:none">find_calib_object</span></code> essentially encapsulates the sequence of three
operator calls: <a href="find_caltab.html"><code><span data-if="hdevelop" style="display:inline">find_caltab</span><span data-if="c" style="display:none">find_caltab</span><span data-if="cpp" style="display:none">FindCaltab</span><span data-if="com" style="display:none">FindCaltab</span><span data-if="dotnet" style="display:none">FindCaltab</span><span data-if="python" style="display:none">find_caltab</span></code></a>, <a href="find_marks_and_pose.html"><code><span data-if="hdevelop" style="display:inline">find_marks_and_pose</span><span data-if="c" style="display:none">find_marks_and_pose</span><span data-if="cpp" style="display:none">FindMarksAndPose</span><span data-if="com" style="display:none">FindMarksAndPose</span><span data-if="dotnet" style="display:none">FindMarksAndPose</span><span data-if="python" style="display:none">find_marks_and_pose</span></code></a> and
<a href="set_calib_data_observ_points.html"><code><span data-if="hdevelop" style="display:inline">set_calib_data_observ_points</span><span data-if="c" style="display:none">set_calib_data_observ_points</span><span data-if="cpp" style="display:none">SetCalibDataObservPoints</span><span data-if="com" style="display:none">SetCalibDataObservPoints</span><span data-if="dotnet" style="display:none">SetCalibDataObservPoints</span><span data-if="python" style="display:none">set_calib_data_observ_points</span></code></a>. For this kind of calibration plates
the following parameters can be set using <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> and
<a href="#GenParamValue"><i><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></i></a>:
</p>
<dl class="generic">

<dt><b><i><span data-if="hdevelop" style="display:inline">'alpha'</span><span data-if="c" style="display:none">"alpha"</span><span data-if="cpp" style="display:none">"alpha"</span><span data-if="com" style="display:none">"alpha"</span><span data-if="dotnet" style="display:none">"alpha"</span><span data-if="python" style="display:none">"alpha"</span></i>:</b></dt>
<dd>
<p>

Smoothing factor for the extraction of the mark contours. For increasing
values of <i><span data-if="hdevelop" style="display:inline">'alpha'</span><span data-if="c" style="display:none">"alpha"</span><span data-if="cpp" style="display:none">"alpha"</span><span data-if="com" style="display:none">"alpha"</span><span data-if="dotnet" style="display:none">"alpha"</span><span data-if="python" style="display:none">"alpha"</span></i>, the filter width and thereby the amount of
smoothing decreases (see also <a href="edges_sub_pix.html"><code><span data-if="hdevelop" style="display:inline">edges_sub_pix</span><span data-if="c" style="display:none">edges_sub_pix</span><span data-if="cpp" style="display:none">EdgesSubPix</span><span data-if="com" style="display:none">EdgesSubPix</span><span data-if="dotnet" style="display:none">EdgesSubPix</span><span data-if="python" style="display:none">edges_sub_pix</span></code></a> for the influence of
the filter width on the Lanser2 filter ).</p>
<p>
<i>Suggested values:</i> <i>0.5</i>, <i>0.7</i>,
<i>0.9</i>,
<i>1.0</i>, <i>1.2</i>, <i>1.5</i>
<i>Default:</i> <i>0.9</i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'gap_tolerance'</span><span data-if="c" style="display:none">"gap_tolerance"</span><span data-if="cpp" style="display:none">"gap_tolerance"</span><span data-if="com" style="display:none">"gap_tolerance"</span><span data-if="dotnet" style="display:none">"gap_tolerance"</span><span data-if="python" style="display:none">"gap_tolerance"</span></i>:</b></dt>
<dd>
<p>

Tolerance factor for gaps between the marks. If the marks appear
closer to each other than expected, you might set
<i><span data-if="hdevelop" style="display:inline">'gap_tolerance'</span><span data-if="c" style="display:none">"gap_tolerance"</span><span data-if="cpp" style="display:none">"gap_tolerance"</span><span data-if="com" style="display:none">"gap_tolerance"</span><span data-if="dotnet" style="display:none">"gap_tolerance"</span><span data-if="python" style="display:none">"gap_tolerance"</span></i> &lt; <i>1.0</i> to avoid disturbing patterns
outside the calibration plate to be associated with the calibration
plate. This can typically happen if the plate is strongly tilted and
positioned in front of a background that exposes mark-like patterns.
If the distances between single marks vary in a wide range, e.g., if
the calibration plate appears with strong perspective distortion in
the image, you might set <i><span data-if="hdevelop" style="display:inline">'gap_tolerance'</span><span data-if="c" style="display:none">"gap_tolerance"</span><span data-if="cpp" style="display:none">"gap_tolerance"</span><span data-if="com" style="display:none">"gap_tolerance"</span><span data-if="dotnet" style="display:none">"gap_tolerance"</span><span data-if="python" style="display:none">"gap_tolerance"</span></i> &gt; <i>1.0</i> to
enforce the marks grouping (see also <a href="find_caltab.html"><code><span data-if="hdevelop" style="display:inline">find_caltab</span><span data-if="c" style="display:none">find_caltab</span><span data-if="cpp" style="display:none">FindCaltab</span><span data-if="com" style="display:none">FindCaltab</span><span data-if="dotnet" style="display:none">FindCaltab</span><span data-if="python" style="display:none">find_caltab</span></code></a>). </p>
<p>
<i>Suggested values:</i> <i>0.75</i>, <i>0.9</i>, <i>1.0</i>,
<i>1.1</i>, <i>1.2</i>, <i>1.5</i></p>
<p>
<i>Default:</i> <i>1.0</i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'max_diam_marks'</span><span data-if="c" style="display:none">"max_diam_marks"</span><span data-if="cpp" style="display:none">"max_diam_marks"</span><span data-if="com" style="display:none">"max_diam_marks"</span><span data-if="dotnet" style="display:none">"max_diam_marks"</span><span data-if="python" style="display:none">"max_diam_marks"</span></i>:</b></dt>
<dd>
<p>

Maximum expected diameter of the marks (needed internally by
<a href="find_marks_and_pose.html"><code><span data-if="hdevelop" style="display:inline">find_marks_and_pose</span><span data-if="c" style="display:none">find_marks_and_pose</span><span data-if="cpp" style="display:none">FindMarksAndPose</span><span data-if="com" style="display:none">FindMarksAndPose</span><span data-if="dotnet" style="display:none">FindMarksAndPose</span><span data-if="python" style="display:none">find_marks_and_pose</span></code></a>). By default, this value is estimated
by the preceding internal call to <a href="find_caltab.html"><code><span data-if="hdevelop" style="display:inline">find_caltab</span><span data-if="c" style="display:none">find_caltab</span><span data-if="cpp" style="display:none">FindCaltab</span><span data-if="com" style="display:none">FindCaltab</span><span data-if="dotnet" style="display:none">FindCaltab</span><span data-if="python" style="display:none">find_caltab</span></code></a>. However, if
the estimation is erroneous for no obvious reason or the internal call to
<a href="find_caltab.html"><code><span data-if="hdevelop" style="display:inline">find_caltab</span><span data-if="c" style="display:none">find_caltab</span><span data-if="cpp" style="display:none">FindCaltab</span><span data-if="com" style="display:none">FindCaltab</span><span data-if="dotnet" style="display:none">FindCaltab</span><span data-if="python" style="display:none">find_caltab</span></code></a> fails or is simply skipped (see
<i><span data-if="hdevelop" style="display:inline">'skip_find_caltab'</span><span data-if="c" style="display:none">"skip_find_caltab"</span><span data-if="cpp" style="display:none">"skip_find_caltab"</span><span data-if="com" style="display:none">"skip_find_caltab"</span><span data-if="dotnet" style="display:none">"skip_find_caltab"</span><span data-if="python" style="display:none">"skip_find_caltab"</span></i> below), you might have to adjust this
value. </p>
<p>
<i>Suggested values:</i> <i>50.0</i>, <i>100.0</i>,
<i>150.0</i>, <i>200.0</i>,
<i>300.0</i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'skip_find_caltab'</span><span data-if="c" style="display:none">"skip_find_caltab"</span><span data-if="cpp" style="display:none">"skip_find_caltab"</span><span data-if="com" style="display:none">"skip_find_caltab"</span><span data-if="dotnet" style="display:none">"skip_find_caltab"</span><span data-if="python" style="display:none">"skip_find_caltab"</span></i>:</b></dt>
<dd>
<p>

Skip the internal call to <a href="find_caltab.html"><code><span data-if="hdevelop" style="display:inline">find_caltab</span><span data-if="c" style="display:none">find_caltab</span><span data-if="cpp" style="display:none">FindCaltab</span><span data-if="com" style="display:none">FindCaltab</span><span data-if="dotnet" style="display:none">FindCaltab</span><span data-if="python" style="display:none">find_caltab</span></code></a>. If activated, only the
domain of <a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> reduces the search area for the internal call
of <a href="find_marks_and_pose.html"><code><span data-if="hdevelop" style="display:inline">find_marks_and_pose</span><span data-if="c" style="display:none">find_marks_and_pose</span><span data-if="cpp" style="display:none">FindMarksAndPose</span><span data-if="com" style="display:none">FindMarksAndPose</span><span data-if="dotnet" style="display:none">FindMarksAndPose</span><span data-if="python" style="display:none">find_marks_and_pose</span></code></a>. Thus, a user defined calibration plate
region can be incorporated by setting
<i><span data-if="hdevelop" style="display:inline">'skip_find_caltab'</span><span data-if="c" style="display:none">"skip_find_caltab"</span><span data-if="cpp" style="display:none">"skip_find_caltab"</span><span data-if="com" style="display:none">"skip_find_caltab"</span><span data-if="dotnet" style="display:none">"skip_find_caltab"</span><span data-if="python" style="display:none">"skip_find_caltab"</span></i>=<i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i> and reducing
the <a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> domain to the user region.</p>
<p>
<code>List of values:</code> <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>, <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i></p>
<p>
<i>Default:</i> <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>
</p>
</dd>
</dl>
<p>If using a HALCON calibration plate as calibration object, it is recommended
to use <code><span data-if="hdevelop" style="display:inline">find_calib_object</span><span data-if="c" style="display:none">find_calib_object</span><span data-if="cpp" style="display:none">FindCalibObject</span><span data-if="com" style="display:none">FindCalibObject</span><span data-if="dotnet" style="display:none">FindCalibObject</span><span data-if="python" style="display:none">find_calib_object</span></code> instead of
<a href="set_calib_data_observ_points.html"><code><span data-if="hdevelop" style="display:inline">set_calib_data_observ_points</span><span data-if="c" style="display:none">set_calib_data_observ_points</span><span data-if="cpp" style="display:none">SetCalibDataObservPoints</span><span data-if="com" style="display:none">SetCalibDataObservPoints</span><span data-if="dotnet" style="display:none">SetCalibDataObservPoints</span><span data-if="python" style="display:none">set_calib_data_observ_points</span></code></a> where possible, since the contour
information, which it stores in the calibration data model, enables a more
precise calibration procedure with <a href="calibrate_cameras.html"><code><span data-if="hdevelop" style="display:inline">calibrate_cameras</span><span data-if="c" style="display:none">calibrate_cameras</span><span data-if="cpp" style="display:none">CalibrateCameras</span><span data-if="com" style="display:none">CalibrateCameras</span><span data-if="dotnet" style="display:none">CalibrateCameras</span><span data-if="python" style="display:none">calibrate_cameras</span></code></a>.
</p>
<p>After a successful call to <code><span data-if="hdevelop" style="display:inline">find_calib_object</span><span data-if="c" style="display:none">find_calib_object</span><span data-if="cpp" style="display:none">FindCalibObject</span><span data-if="com" style="display:none">FindCalibObject</span><span data-if="dotnet" style="display:none">FindCalibObject</span><span data-if="python" style="display:none">find_calib_object</span></code>, the extracted
points can be queried by <a href="get_calib_data_observ_points.html"><code><span data-if="hdevelop" style="display:inline">get_calib_data_observ_points</span><span data-if="c" style="display:none">get_calib_data_observ_points</span><span data-if="cpp" style="display:none">GetCalibDataObservPoints</span><span data-if="com" style="display:none">GetCalibDataObservPoints</span><span data-if="dotnet" style="display:none">GetCalibDataObservPoints</span><span data-if="python" style="display:none">get_calib_data_observ_points</span></code></a> and the
extracted contours can be accessed by <a href="get_calib_data_observ_contours.html"><code><span data-if="hdevelop" style="display:inline">get_calib_data_observ_contours</span><span data-if="c" style="display:none">get_calib_data_observ_contours</span><span data-if="cpp" style="display:none">GetCalibDataObservContours</span><span data-if="com" style="display:none">GetCalibDataObservContours</span><span data-if="dotnet" style="display:none">GetCalibDataObservContours</span><span data-if="python" style="display:none">get_calib_data_observ_contours</span></code></a>.
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>Automatically parallelized on internal data level.</li>
  
</ul>
<p>This operator modifies the state of the following input parameter:</p>
<ul><li><a href="#CalibDataID"><span data-if="hdevelop" style="display:inline">CalibDataID</span><span data-if="c" style="display:none">CalibDataID</span><span data-if="cpp" style="display:none">CalibDataID</span><span data-if="com" style="display:none">CalibDataID</span><span data-if="dotnet" style="display:none">calibDataID</span><span data-if="python" style="display:none">calib_data_id</span></a></li></ul>
<p>During execution of this operator, access to the value of this parameter must be synchronized if it is used across multiple threads.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Image" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></b> (input_object)  </span><span>singlechannelimage <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject</span> (byte / uint2)</span>
</div>
<p class="pardesc">Input image.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CalibDataID" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CalibDataID</span><span data-if="c" style="display:none">CalibDataID</span><span data-if="cpp" style="display:none">CalibDataID</span><span data-if="com" style="display:none">CalibDataID</span><span data-if="dotnet" style="display:none">calibDataID</span><span data-if="python" style="display:none">calib_data_id</span></code></b> (input_control, state is modified)  </span><span>calib_data <code>→</code> <span data-if="dotnet" style="display:none"><a href="HCalibData.html">HCalibData</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of a calibration data model.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CameraIdx" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CameraIdx</span><span data-if="c" style="display:none">CameraIdx</span><span data-if="cpp" style="display:none">CameraIdx</span><span data-if="com" style="display:none">CameraIdx</span><span data-if="dotnet" style="display:none">cameraIdx</span><span data-if="python" style="display:none">camera_idx</span></code></b> (input_control)  </span><span>number <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Index of the observing camera.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0, 1, 2</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CalibObjIdx" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CalibObjIdx</span><span data-if="c" style="display:none">CalibObjIdx</span><span data-if="cpp" style="display:none">CalibObjIdx</span><span data-if="com" style="display:none">CalibObjIdx</span><span data-if="dotnet" style="display:none">calibObjIdx</span><span data-if="python" style="display:none">calib_obj_idx</span></code></b> (input_control)  </span><span>number <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Index of the calibration object.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0, 1, 2</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CalibObjPoseIdx" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CalibObjPoseIdx</span><span data-if="c" style="display:none">CalibObjPoseIdx</span><span data-if="cpp" style="display:none">CalibObjPoseIdx</span><span data-if="com" style="display:none">CalibObjPoseIdx</span><span data-if="dotnet" style="display:none">calibObjPoseIdx</span><span data-if="python" style="display:none">calib_obj_pose_idx</span></code></b> (input_control)  </span><span>number <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Index of the observed calibration object.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0, 1, 2</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>CalibObjPoseIdx &gt;= 0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamName" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></b> (input_control)  </span><span>attribute.name-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Names of the generic parameters to be set.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'alpha'</span><span data-if="c" style="display:none">"alpha"</span><span data-if="cpp" style="display:none">"alpha"</span><span data-if="com" style="display:none">"alpha"</span><span data-if="dotnet" style="display:none">"alpha"</span><span data-if="python" style="display:none">"alpha"</span>, <span data-if="hdevelop" style="display:inline">'gap_tolerance'</span><span data-if="c" style="display:none">"gap_tolerance"</span><span data-if="cpp" style="display:none">"gap_tolerance"</span><span data-if="com" style="display:none">"gap_tolerance"</span><span data-if="dotnet" style="display:none">"gap_tolerance"</span><span data-if="python" style="display:none">"gap_tolerance"</span>, <span data-if="hdevelop" style="display:inline">'max_diam_marks'</span><span data-if="c" style="display:none">"max_diam_marks"</span><span data-if="cpp" style="display:none">"max_diam_marks"</span><span data-if="com" style="display:none">"max_diam_marks"</span><span data-if="dotnet" style="display:none">"max_diam_marks"</span><span data-if="python" style="display:none">"max_diam_marks"</span>, <span data-if="hdevelop" style="display:inline">'sigma'</span><span data-if="c" style="display:none">"sigma"</span><span data-if="cpp" style="display:none">"sigma"</span><span data-if="com" style="display:none">"sigma"</span><span data-if="dotnet" style="display:none">"sigma"</span><span data-if="python" style="display:none">"sigma"</span>, <span data-if="hdevelop" style="display:inline">'skip_find_caltab'</span><span data-if="c" style="display:none">"skip_find_caltab"</span><span data-if="cpp" style="display:none">"skip_find_caltab"</span><span data-if="com" style="display:none">"skip_find_caltab"</span><span data-if="dotnet" style="display:none">"skip_find_caltab"</span><span data-if="python" style="display:none">"skip_find_caltab"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamValue" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></b> (input_control)  </span><span>attribute.value-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[str, float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string / </span><span data-if="hdevelop" style="display:inline">real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>string</i> / </span><span data-if="dotnet" style="display:none">double / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>HString</i> / </span><span data-if="cpp" style="display:none">double / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>char*</i> / </span><span data-if="c" style="display:none">double / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Values of the generic parameters to be set.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0.5, 0.9, 1.0, 1.2, 1.5, 2.0, <span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span>, <span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></p>
</div>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="read_image.html"><span data-if="hdevelop" style="display:inline">read_image</span><span data-if="c" style="display:none">read_image</span><span data-if="cpp" style="display:none">ReadImage</span><span data-if="com" style="display:none">ReadImage</span><span data-if="dotnet" style="display:none">ReadImage</span><span data-if="python" style="display:none">read_image</span></a></code>, 
<code><a href="find_marks_and_pose.html"><span data-if="hdevelop" style="display:inline">find_marks_and_pose</span><span data-if="c" style="display:none">find_marks_and_pose</span><span data-if="cpp" style="display:none">FindMarksAndPose</span><span data-if="com" style="display:none">FindMarksAndPose</span><span data-if="dotnet" style="display:none">FindMarksAndPose</span><span data-if="python" style="display:none">find_marks_and_pose</span></a></code>, 
<code><a href="set_calib_data_cam_param.html"><span data-if="hdevelop" style="display:inline">set_calib_data_cam_param</span><span data-if="c" style="display:none">set_calib_data_cam_param</span><span data-if="cpp" style="display:none">SetCalibDataCamParam</span><span data-if="com" style="display:none">SetCalibDataCamParam</span><span data-if="dotnet" style="display:none">SetCalibDataCamParam</span><span data-if="python" style="display:none">set_calib_data_cam_param</span></a></code>, 
<code><a href="set_calib_data_calib_object.html"><span data-if="hdevelop" style="display:inline">set_calib_data_calib_object</span><span data-if="c" style="display:none">set_calib_data_calib_object</span><span data-if="cpp" style="display:none">SetCalibDataCalibObject</span><span data-if="com" style="display:none">SetCalibDataCalibObject</span><span data-if="dotnet" style="display:none">SetCalibDataCalibObject</span><span data-if="python" style="display:none">set_calib_data_calib_object</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="set_calib_data.html"><span data-if="hdevelop" style="display:inline">set_calib_data</span><span data-if="c" style="display:none">set_calib_data</span><span data-if="cpp" style="display:none">SetCalibData</span><span data-if="com" style="display:none">SetCalibData</span><span data-if="dotnet" style="display:none">SetCalibData</span><span data-if="python" style="display:none">set_calib_data</span></a></code>, 
<code><a href="calibrate_cameras.html"><span data-if="hdevelop" style="display:inline">calibrate_cameras</span><span data-if="c" style="display:none">calibrate_cameras</span><span data-if="cpp" style="display:none">CalibrateCameras</span><span data-if="com" style="display:none">CalibrateCameras</span><span data-if="dotnet" style="display:none">CalibrateCameras</span><span data-if="python" style="display:none">calibrate_cameras</span></a></code>
</p>
<h2 id="sec_alternatives">可替代算子</h2>
<p>
<code><a href="find_caltab.html"><span data-if="hdevelop" style="display:inline">find_caltab</span><span data-if="c" style="display:none">find_caltab</span><span data-if="cpp" style="display:none">FindCaltab</span><span data-if="com" style="display:none">FindCaltab</span><span data-if="dotnet" style="display:none">FindCaltab</span><span data-if="python" style="display:none">find_caltab</span></a></code>, 
<code><a href="find_marks_and_pose.html"><span data-if="hdevelop" style="display:inline">find_marks_and_pose</span><span data-if="c" style="display:none">find_marks_and_pose</span><span data-if="cpp" style="display:none">FindMarksAndPose</span><span data-if="com" style="display:none">FindMarksAndPose</span><span data-if="dotnet" style="display:none">FindMarksAndPose</span><span data-if="python" style="display:none">find_marks_and_pose</span></a></code>, 
<code><a href="set_calib_data_observ_points.html"><span data-if="hdevelop" style="display:inline">set_calib_data_observ_points</span><span data-if="c" style="display:none">set_calib_data_observ_points</span><span data-if="cpp" style="display:none">SetCalibDataObservPoints</span><span data-if="com" style="display:none">SetCalibDataObservPoints</span><span data-if="dotnet" style="display:none">SetCalibDataObservPoints</span><span data-if="python" style="display:none">set_calib_data_observ_points</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Calibration</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
